Most control systems operate over a number of different control devices each of which represents a different type of hardware platform featuring its own unique hardware and software environment. Each control device requires custom programming to make the device function and operate as a component of the system. The functionality provided to the control system by the devices is limited by the software included with each control device where such product specific programming tools as may exist allow the limited configuration of the delivered device functionality. The proper operation and programming of such systems requires every operator and system programmer to be knowledgeable about the specifics of hardware and firmware associated with each device. The programs for the devices usually reflect different programming techniques; have large numbers of unique features that unique to the device. The programs across different types of devices generally share little in common except at the highest levels of functionality. Although some attempts have been to define user interface standards, they are limited to single types of devices (IEC 1131 programmable controller) and solely include instructions specific to those devices. Although a step in the right direction, the programs can not be transferred and loaded into products from different vendors. Since many programs for control devices are custom developed from scratch, in practice it is a challenging, burdensome, and time consuming job to program these types of control systems and the programs produced often require substantial debugging with multiple, device specific tools. Maintenance and support are equally challenging since available tools are, again, limited and there are little or no reliable organizational principles governing the structures of control device software and firmware.